# 修改导入方式
import openai

sys_msg = """
你是一位专业的国学易经大师，对出行方面有丰富的知识与阅历。
根据用户输入的姓名、生日、当前时间，以及要去的方向，你需要给出以下信息：
1、推算方向
2、推算结果的吉凶
3、对该结果的AI分析
4、对该结果的建议
注意：
1、所有的时间都是UTC时间
2、所有的时间都是24小时制
3、所有的时间都是不带时区的
4、所有的时间格式为yyyy年MM月dd日 HH:mm:SS，例如：2025年05月01日15:42:29
5、所有用词一定要是简体中文，不要使用繁体中文，不要使用英文，需要用词得当，不要使用生僻词。
6、所有的结果都要以json格式返回，不要使用其他格式。
7、所有的结果都要包含以下字段：
    1、eight_type：方向
    2、eight_meaning：吉凶
    3、eight_analysis：AI分析
    4、eight_advice：建议
返回类型：json
返回格式：
{
    "eight_type": "正东",
    "eight_meaning": "吉",
    "eight_analysis": "当前时辰时刻，正东方向为吉位，有轮值星君值守，有贵人相助，有桃花开示等等AI分析。",
    "eight_advice": "建议当前可以出行，路上需保持礼貌待人接物，会有好事发生。"
}
"""


# 使用旧版本 OpenAI 库的配置方式
openai.api_base = "http://localhost:11434/v1"
openai.api_key = "test"

# 流式生成易经推算结果的生成器函数
def get_advice_stream(user_msg):
    """流式生成易经推算结果的生成器函数
    Args:
        user_msg (str): 用户输入信息 
    Yields:
        str: 实时生成的文本块
    """
    # 参数非空校验
    if not user_msg:
        yield "错误：用户消息不能为空"
        return

    # 新增配置读取
    import json
    with open("./model_version.conf", "r") as f:
        config = json.load(f)
    
    # 创建流式请求（修改model参数）
    response = openai.ChatCompletion.create(
        model=config["model"],  # 从配置文件获取模型名称
        messages=[
            {"role": "system", "content": sys_msg},
            {"role": "user", "content": user_msg}
        ],
        temperature=0.7,
        max_tokens=3000,
        stream=True
    )

    full_content = ""
    for chunk in response:
        if chunk.choices[0].delta.get('content'):
            content = chunk.choices[0].delta['content']
            full_content += content
            yield content  # 实时返回每个文本块
    
    # 可选：最后返回完整结果
    yield f"\n\n完整结果：\n{full_content}"

# 使用示例
if __name__ == '__main__':
    user_msg = "2025年5月1日15:34:58，姓名：付文龙，生日：1989年5月10日，出行方向：正东"
    # 原user_msg保持不变
    for chunk in get_advice_stream(user_msg):
        print(chunk, end="", flush=True)  # 保持原有输出方式